const { publicPath } = require("../config");
const { getFile } = require("../utils/fileUtil");
const { getUrlInfo } = require("../utils/reqUtil");
const { pipe } = require("../utils/functionUtil");

/* 静态资源服务受理模块 */

// /file/img/abc.jpg
const regFilePath = /\/file\/(.*)/;
const getFilePath = (pathname) => `${publicPath}/${regFilePath.exec(pathname)[1]}`;

function handle0(req, res) {
  // 获取URL中的pathname
  const { pathname } = getUrlInfo(req);

  // 从pathname中提取文件路径
  const filePath = getFilePath(pathname)

  // 调用工具函数读取其内容
  getFile(filePath).then(
    data => res.end(data)
  ).catch(
    err => res.end(JSON.stringify(err))
  )
}

const getPathname = (req)=>getUrlInfo(req).pathname
async function handle(req, res) {
  try {
    // 流水线作业：根据req获取路径名 => 根据路径名获得文件路径 => 根据文件路径获取文件
    const data = await pipe(getPathname,getFilePath,getFile)(req)
    res.end(data)
  } catch (err) {
    res.end(JSON.stringify(err))
  }  
}

module.exports = {
  handle,
};
